package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.ComunicadoTipo;
import br.com.condominio.service.ComunicadoTipoService;

@ViewScoped
@ManagedBean(name = "comunicadoTipoBean")
public class ComunicadoTipoBean extends BaseBean{
	
	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{comunicadoTipoService}")
	private ComunicadoTipoService model;
	private ComunicadoTipo comunicadoTipo;
	private List<ComunicadoTipo> comunicadoTipos;
	private String nomeComunicadoTipo;
	private boolean editMode;
	
	public ComunicadoTipoBean() {
		comunicadoTipo = new ComunicadoTipo();
	}

	public ComunicadoTipoService getModel() {
		return model;
	}

	public void setModel(ComunicadoTipoService model) {
		this.model = model;
	}

	public ComunicadoTipo getComunicadoTipo() {
		return comunicadoTipo;
	}

	public void setComunicadoTipo(ComunicadoTipo comunicadoTipo) {
		this.comunicadoTipo = comunicadoTipo;
	}
	
	public void salvar(){
		System.out.println("idf comunicadoTipo " +comunicadoTipo.getComutipoCodigo());
		if(comunicadoTipo.getComutipoCodigo() == null || comunicadoTipo.getComutipoCodigo().intValue() == 0){
			comunicadoTipo = model.persistComunicadoTipo(comunicadoTipo);
			comunicadoTipo = new ComunicadoTipo();
			addInfoMessage("ComunicadoTipo criado com sucesso.");
		}else{
			model.updateComunicadoTipo(comunicadoTipo);
			addInfoMessage("ComunicadoTipo alterado com sucesso.");
		}
	}
	
	public void delete(){
		model.deleteComunicadoTipo(comunicadoTipo);
		if(nomeComunicadoTipo != null && !nomeComunicadoTipo.isEmpty())
			comunicadoTipos = model.getComunicadoTiposByName(nomeComunicadoTipo);
		else
			comunicadoTipos = model.getAllComunicadoTipos();
		
		//return "";
	}

	public void create(){
		this.comunicadoTipo = new ComunicadoTipo();
		this.editMode = true;
	}
	
	public void update(){
		this.editMode = true;
	}
	
	public void cancel(){
		this.editMode = false;
	}

	public void filtrarComunicadoTipo(AjaxBehaviorEvent event){
		if(nomeComunicadoTipo != null && !nomeComunicadoTipo.isEmpty()){
			comunicadoTipos = model.getComunicadoTiposByName(nomeComunicadoTipo);
		}else{
			comunicadoTipos = model.getAllComunicadoTipos();
		}
	}

	public List<ComunicadoTipo> getComunicadoTipos() {
		if(comunicadoTipos == null){
			comunicadoTipos = model.getAllComunicadoTipos();
		}
		return comunicadoTipos;
	}

	public void setComunicadoTipos(List<ComunicadoTipo> comunicadoTipos) {
		this.comunicadoTipos = comunicadoTipos;
	}

	public String getNomeComunicadoTipo() {
		return nomeComunicadoTipo;
	}

	public void setNomeComunicadoTipo(String nomeComunicadoTipo) {
		this.nomeComunicadoTipo = nomeComunicadoTipo;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}
}
